package com.zjsru.oneDay;

import java.util.HashMap;
import java.util.Map;

/**
 * 统计特殊四元组
 *
 *输入：nums = [1,2,3,6]
 * 输出：1
 * 解释：满足要求的唯一一个四元组是 (0, 1, 2, 3) 因为 1 + 2 + 3 == 6 。
 *
 * */
public class countQuadruplets {
    public int countQuadruplets(int[] nums) {
        int ans = 0;
        int n = nums.length;
//        for(int i = 0;i < n;i++){
//            for(int a = 0; a < n;a++){
//                for(int b = 0;b < a;b++){
//                    for(int c = 0;c < b;c++){
//                        if(nums[a] + nums[b] + nums[c] == nums[i])
//                            ans++;
//                    }
//                }
//            }
//        }
//        return ans;

        //官方枚举题解
        for(int a = 0;a < n;++a){
            for (int b = a+1; b < n; ++b) {
                for (int c = b+1; c < n;++c ){
                    for(int d = c+1;d < n;++d){
                        if(nums[a] + nums[b] + nums[c] == nums[d]){
                            ++ans;
                        }
                    }
                }
            }
        }
        return ans;

//        //哈希表解法
//        Map<Integer, Integer> cnt = new HashMap<Integer, Integer>();
//        for (int c = n - 2; c >= 2; c--) {
//            cnt.put(nums[c + 1], cnt.getOrDefault(nums[c + 1], 0) + 1);
//            for (int a = 0; a < c; a++) {
//                for (int b = a + 1; b < c; b++) {
//                    ans += cnt.getOrDefault(nums[a] + nums[b] + nums[c], 0);
//                }
//            }
//        }
//        return ans;

    }

    public static void main(String[] args) {
        countQuadruplets countQuadruplets = new countQuadruplets();
        int[] nums = new int[]{1, 2, 3, 6};
        System.out.println(countQuadruplets.countQuadruplets(nums));
    }
}
